A storage server is a special-purpose processing system used to store and retrieve data on behalf of one or more client processing systems (“clients”). A file server is an example of a storage server. A file server operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage based disks or tapes. The mass storage devices may be organized into one or more groups of Redundant Array of Inexpensive Disks (RAID). In a storage area network (SAN), a storage server can provide clients with block-level access to stored data, rather than file-level access. Some storage servers are capable of providing clients with both file-level access and block-level access, such as certain Filers produced by Network Appliance, Inc. of Sunnyvale, Calif.
Multiple storage servers may be combined together, such as in a cluster. A cluster may be used to protect operations by providing continued service if a storage device fails or requires maintenance or upgrade. In one example, when a client makes a data request to a storage server in a session-based environment, the storage server will generally respond with an acknowledgement (or “ACK”) signal. When a server has failed or is otherwise unavailable, no ACK message will be sent. If the client does not receive an ACK signal, the client will become aware that a problem exists and may resend the request or take other action. Another server may replace the original server, and the request can be resent to the replacement server.
However, if a storage server receives a request, sends an ACK signal, and then fails before completing the request, the client will expect the data to be forthcoming and will not resend the request. In a session-based environment, the data request may then be irretrievable. A replacement server may take over for the original failed server, and the replacement server can then request that any pending request be resent, but the data request may no longer be available.